<?php

require_once 'AbstractModel.php';

class FamilleServiceBDD extends AbstractModel
{
	// Préparation des requêtes
	var $_truncate;
	var $_insert;
	var $_update_codefamille;
	var $_update_libellefamille;
	var	$_update_commentaire;
	var	$_update_description;
	var	$_update_code_prestation;
	var $_selectAll;
	var $_selectNames;
	var $_delete;
	
	public function __construct()
    {
        parent::__construct('FAMILLE_SERVICE');
		// Connexion à la base de données
		$this->_truncate = $this->_db->prepare('TRUNCATE FAMILLE_SERVICE');
		$this->_insert = $this->_db->prepare('INSERT INTO FAMILLE_SERVICE (code_famille, libelle_famille, commentaire, description, code_prestation) VALUES (?, ?, ?, ? , ?);');

		$this->_update_codefamille = $this->_db->prepare('UPDATE FAMILLE_SERVICE SET code_famille = :value WHERE code_famille=:code_famille;');
		$this->_update_libellefamille = $this->_db->prepare('UPDATE FAMILLE_SERVICE SET libelle_famille = :value WHERE code_famille=:code_famille;');
		$this->_update_commentaire = $this->_db->prepare('UPDATE FAMILLE_SERVICE SET commentaire = :value WHERE code_famille=:code_famille;');
		$this->_update_description = $this->_db->prepare('UPDATE FAMILLE_SERVICE SET description = :value WHERE code_famille=:code_famille;');
		$this->_update_code_prestation = $this->_db->prepare('UPDATE FAMILLE_SERVICE SET code_prestation = :value WHERE code_famille=:code_famille;');
		$this->_selectAll = $this->_db->prepare('SELECT * FROM FAMILLE_SERVICE');
		$this->_selectAll->setFetchMode(PDO::FETCH_ASSOC); // Facultatif
		$this->_selectNames = $this->_db->prepare('SELECT code_famille, libelle_famille FROM FAMILLE_SERVICE');
		$this->_selectNames->setFetchMode(PDO::FETCH_ASSOC); // Facultatif
		
		$this->_delete = $this->_db->prepare('DELETE FROM FAMILLE_SERVICE WHERE code_famille=?;');
    }
	
	public function addFamille($code_famille, $libelle_famille, $commentaire, $description, $code_prestation)
{
	// On sécurise les entrées
	$libelle_famille = strip_tags($libelle_famille);
	$code_famille = strip_tags($code_famille);
	$commentaire = strip_tags($commentaire);
	$description = strip_tags($description);
	$code_prestation = strip_tags($code_prestation);

	try{
			if ( $this->_insert->execute(array($code_famille, $libelle_famille, $commentaire, $description, $code_prestation)) )
			{
				echo "SUCCESS : La nouvelle famille de service à été créé";
			}else{
				echo "FAILURE : La nouvelle famille de service n'a PAS put être créé: ";
			}
		}
		catch(Exception $e)
		{
			echo "Échec : " . $e->getMessage();
		}
	}
	
	public function update($code_famille, $attribute, $value)
	{
		// Sécurisation des données en entrée
		$code_famille = strip_tags($code_famille);
		$value = strip_tags($value);
		
		try{
			if ( $attribute == 'code_famille'){
				$this->_update_codefamille->bindParam(':code_famille', $code_famille, PDO::PARAM_STR);
				$this->_update_codefamille->bindParam(':value', $value, PDO::PARAM_STR);
				$this->_update_codefamille->execute();
			}elseif ( $attribute == 'libelle_famille'){
				$this->_update_libellefamille->bindParam(':code_famille', $code_famille, PDO::PARAM_STR);
				$this->_update_libellefamille->bindParam(':value', $value, PDO::PARAM_STR); 
				$this->_update_libellefamille->execute();
			}elseif ( $attribute == 'commentaire'){
				$this->_update_commentaire->bindParam(':code_famille', $code_famille, PDO::PARAM_STR);
				$this->_update_commentaire->bindParam(':value', $value, PDO::PARAM_STR); 
				$this->_update_commentaire->execute();
			}elseif ( $attribute == 'description'){
				$this->_update_description->bindParam(':code_famille', $code_famille, PDO::PARAM_STR);
				$this->_update_description->bindParam(':value', $value, PDO::PARAM_STR); 
				$this->_update_description->execute();
			}elseif ( $attribute == 'code_prestation'){
				$this->_update_code_prestation->bindParam(':code_famille', $code_famille, PDO::PARAM_STR);
				$this->_update_code_prestation->bindParam(':value', $value, PDO::PARAM_STR); 
				$this->_update_code_prestation->execute();
			}
			echo "La création d'utilisateur à été effectuée avec succés :)";
		}
		catch(Exception $e)
		{
			echo "Échec : " . $e->getMessage();
		}
	}
	
	public  function fetchAllFamille()
	{
		$this->_selectAll->execute();
		return $listeFamille = $this->_selectAll->fetchAll();
	}
	
	public  function fetchFamilleNames()
	{
		$this->_selectNames->execute();
		return $listeFamille = $this->_selectNames->fetchAll();
	}
	
	public  function delete($code_famille)
	{
		$this->_delete->execute(array($code_famille));
	}
}
